package cn.tedu.oop;
/*本类用于测试构造方法*/
public class TestConstructor {
    public static void main(String[] args) {
        //4.创建Person类对象并进行测试
        /*1.每一个类中默认都会存在一个没有参数的构造方法
         * 每次new(实例化)对象时,都会自动触发这个类对应的构造方法来帮我们创建对象*/
        Person p = new Person();
        System.out.println(p.name);
        System.out.println(p.age);
        System.out.println(p.address);
        p.eat();
        //6.创建Person类的第2个对象
        /*3.每次创建对象时,都会执行构造方法
         * 构造方法的作用:用来创建对象的*/
        Person p2 = new Person();
        //8.创建Person类的第3个对象,要使用含参构造创建
        Person p3 = new Person(88);
        //10.使用全参构造创建Person类的对象
        Person p4 = new Person("李逵",32,"柳树下");
        //11.查看p4对象的属性值是否赋值成功
        System.out.println(p4.name);
        System.out.println(p4.age);
        System.out.println(p4.address);
        //12.查看p3对象的属性值是否赋值成功
        System.out.println(p3.name);
        System.out.println(p3.age);
        System.out.println(p3.address);
    }
}
//1.创建Person类,用来描述人这一类事物
class Person{
    //2.提供Person类的属性
    String name;//姓名
    int age;//年龄
    String address;//住址

    /*2.构造方法的格式:没有返回值类型并且与本类类名同名的方法*/
    //5.创建本类的无参构造
    /*4.如果提供了其他的构造函数,默认的无参构造会被覆盖,就不存在了
     * 所以,如果想不传参数创建对象的话,需要我们手动提供这个类的无参构造*/
    public Person(){
        System.out.println("我是Person类的无参构造");
    }
    //7.创建本类的含参构造
    /*public Person(int num){
        System.out.println("我是Person类的含参构造"+num);
    }*/
    public Person(int num){
        this.age = num;
        System.out.println("我是Person类的含参构造"+num);
    }
    //9.创建本类的全参构造
    public Person(String name, int age, String address) {
        /*this.name = name;  //赋值语句
        this.age = age;
        this.address = address;*/
        System.out.println("我是Person类的全参构造");
    }

    //3.功能-方法
    public void eat(){
        System.out.println("干饭不积极,思想有问题~");
    }
}
